﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<math.h>//sqrt计算平方根
#include<stdlib.h>//rand
#include<string.h>//strcmp(a,b)
//int main() {
//	int num = 0;
//	scanf("%d", &num);
//	if (num % 2 == 1)//()后不加；
//		printf("%d是奇数", num);
//	else
//		printf("%d是偶数", num);
//	return 0;
//}

//输⼊⼀个年龄， >= 18岁就输出：成年，否则就输出：未成年
//int main() {
//	int age = 0;
//	scanf("%d", &age);
//	if (age >= 18)
//	{
//		printf("您已成年\n");
//		printf("可以谈恋爱咯");
//	}
//	else
//		printf("未成年");
//	return 0;
//}


//要求输⼊⼀个整数，判断输⼊的整数是0，还是正数或者负数。
//int main() {
//	int num = 0;
//	scanf("%d", &num);
//	if (num ==0)//()后不加；
//		printf("%d是0", num);
//	else
//		if(num>0)
//			printf("%d是正数", num);
//		else
//		    printf("%d是负数", num);
//	return 0;
//}


//输⼊⼀个⼈的年龄
//如果年龄 < 18岁，打印"少年"
//	如果年龄在18岁⾄44岁打印"⻘年"
//	如果年龄在45岁⾄59岁打印"中⽼年"
//	如果年龄在60岁⾄89岁打印"⽼年"
//	如果90岁及以上打印"⽼寿星
//int main() {
//	int age = 0;
//	scanf("%d",& age);
//	if (age < 18)
//		printf("少年");
//	else if (age < 45)
//			printf("青年");
//	else if (age < 60)
//				printf("中老年");
//	else if (age < 90)
//					printf("老年");
//	else
//					printf("老寿星");
//	return 0;
//}

//int main() {
//	int a = 0;
//	int b = 0;
//	scanf("%d", &a);
//	b = (a > 5 ?3 : - 3);
//	printf("%d", b);
//	return 0;
//}

//int main() {
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a,&b);
//	int c = (a >= b ? a: b);
//	printf("%d", c);
//	return 0;
//
//
//}

//输⼊⼀个年份year，判断year是否是闰年
//闰年判断的规则：
//1. 能被4整除并且不能被100整除是闰年
//2. 能被400整除是闰年
//int main() {
//	int year = 0;
//	scanf("%d", &year);
//	if ((year % 4 == 0&&year % 100 != 0) ||( year % 400 == 0))
//		printf("闰年\n");
//	else
//		printf("不是闰年\n");
//	return 0;
//}
//
//int main() {
//	int m = 0;
//	scanf("%d", &m);
//	switch (m % 3) {
//	case 0:
//		printf("余数是0\n");
//		break;
//	case 1:
//		printf("余数是1\n");
//		break;
//	case 2:
//		printf("余数是2\n");
//		break;
//	}
//	return 0;
//}


//int main() {
//	int day = 0;
//	scanf("%d", &day);
//	switch (day) {
//	case 1:
//		printf("今天是星期一\n");
//		break;
//	case 2:
//		printf("今天是星期二\n");
//		break;
//	case 3:
//		printf("今天是星期三\n");
//		break;
//	case 4:
//		printf("今天是星期四\n");
//		break;
//	case 5:
//		printf("今天是星期五\n");
//		break;
//	case 6:
//		printf("今天是星期六\n");
//		break;
//	case 7:
//		printf("今天是星期天\n");
//		break;
//	}
//	return 0;
//}

//int main() {
//	int day = 0;
//	scanf("%d", &day);
//	switch (day) {
//	case 1:
//
//	case 2:
//
//	case 3:
//
//	case 4:
//
//	case 5:
//		printf("今天是工作日\n");//同一个逻辑可以不加break
//		break;
//	case 6:
//
//	case 7:
//		printf("今天是休息日\n");
//		break;
//	default://所有case都不能匹配就会走default，default前也需要break
//		printf("输入错误\n");
//	}
//	return 0;
//}

//int main() {
//	int m = 1;
//	while (m < 11)
//	{
//		printf("%d\n", m);
//		m++;
//	}
//	return 0;
//}

//输⼊⼀个正的整数，逆序打印这个整数的每⼀位
//例如：
//输⼊：1234，输出：4 3 2 1
//输⼊：521，输出：1 2 5
//int main() {
//	int num = 0;
//	scanf("%d", &num);
//	while (num != 0)
//	{
//		printf("%d ", num % 10);//每一个数除以10得到的都是个位数
//		num = num / 10;//除以10得到的商，相当于把各位去掉了，到最后个位数/10等于0
//	}
//	return 0;
//}

//int main() {
//	int n = 0;
//	scanf("%d", &n);
//	for  (n;n!=0;n=n/10)
//	{
//		printf("%d ", n % 10);
//		
//	}
//	return 0;
//}


//int main() {
//	int i = 0;
//	int sum = 0;
//	for (i = 1; i <= 100; i++)
//	{
//		if (i % 3 == 0) {
//		
//			sum += i;//sum=sum+i
//
//			
//		}
//		
//	}
//	printf("%d", sum);
//	return 0;
//}

//int main() {
//	int i = 0;
//	do
//	{
//		printf("%d\n", i);
//		i++;
//	} while (i < 11);
//	return 0;
//}

//自己尝试版本  打印输入数字的位数
//int main() {
//	int n = 0;
//	int m = 1;
//	scanf("%d", &n);
//	do {
//		if (n / 10 >= 1)
//		{
//			m++;
//			n = n / 10;
//		}
//	}
//	while (n > 9);
//	printf("%d", m);
//	return 0;
//}
 
//按照老师教的调整
//int main() {
//	int n = 0;
//	int m = 0;
//	scanf("%d", &n);
//	do {
//		
//			m++;
//			n = n / 10;
//		}
//     while (n!=0);
//	printf("%d", m);
//	return 0;
//}

//嵌套函数：找出100~200之间的素数，并打印在屏幕上。
//注：素数⼜称质数，只能被1和本⾝整除的数字
//int main() {
//	int i = 0;
//	int count = 0;
//	for (i = 101; i <=200; i++)//i+=2也可以
//	{
//		int flag = 0;
//		int j = 0;
//		for (j = 2; j <i; j++) {
//			if (i % j == 0)
//			{
//				flag = 1;
//				break;
//			}
//
//		}
//		if (flag == 0)
//		{
//			printf("%d ", i);
//			count++;
//		}
//	}
//	printf("\n%d", count);
//	return 0;
//}

//int main() {
//	int i = 0;
//	int count = 0;
//	for (i = 101; i <= 200; i++)//i+=2也可以
//	{
//		int flag = 0;
//		int j = 0;
//		for (j = 2; j <=sqrt(i); j++) {//sqrt是计算平方根的，头文件是math.h
//			//m=a*b,ab中一定有一个是小于根号m的
//			if (i % j == 0)
//			{
//				flag = 1;
//				break;
//			}
//
//		}
//		if (flag == 0)
//		{
//			printf("%d ", i);
//			count++;
//		}
//	}
//	printf("\n%d", count);
//	return 0;
//}

//电脑六十秒后关机，除非输入我是猪可以解除关机程序******
// //int main() {
//	char input[20] = { 0 };//字符串占位20
//	system("shutdown -s -t 60");
//	again:
//	printf("您的电脑将在一分钟内关机，请输入“我是猪”取消关机\n");
//	scanf("%s", input);
//	if (strcmp("我是猪", input) == 0)
//	{
//		system("shutdown -a");
//		printf("已取消关机");
//	}
//	else
//		goto again;
//	return 0;
//}

//int main() {
//	char input[20] = { 0 };//字符串占位20
//	system("shutdown -s -t 60");
//	while (1) {
//	
//		printf("您的电脑将在一分钟内关机，请输入“我是猪”取消关机\n");
//		scanf("%s", input);
//		if (strcmp("我是猪", input) == 0)
//		{
//			system("shutdown -a");
//			printf("已取消关机");
//		}
//	}
//	
//	return 0;
//}

//写一个生成随机数游戏，玩家猜测，电脑给出正确或错误*********
//自定义菜单函数
//void menu(){
//	printf("是否开始猜数字游戏\n");
//    printf("1.开始\n");
//    printf("0.结束\n");
//    printf("请输入：");
//    
//}
////自定义游戏函数
//void game() {
//	int r = (rand() % 100 + 1);//为了让rand生成的随机数在1~100
//	int guess = 0;
//
//	/*do {
//		printf("请猜测：");
//		scanf("%d", &guess);
//		if (guess > r)
//			printf("猜大了\n");
//		else if (guess < r)
//			printf("猜小了\n");
//		else
//			printf("恭喜你猜对了\n");
//	} while (guess != r);*/
//	//循环也可以用：
//	while (1) {
//		printf("请猜测：");
//		scanf("%d", &guess);
//		if (guess > r)
//			printf("猜大了\n");
//		else if (guess < r)
//			printf("猜小了\n");
//		else
//		{
//			printf("恭喜你猜对了\n");
//			break;
//		}
//	}
//}
//int main()
//{   //为了让伪随机数变真随机
//	srand((unsigned int)time(NULL));
//	//time返回类型是time_t,强制转换为srand需要的unsigned int 类型
//	int input = 0;
//	//选择是否游戏
//	do
//	{
//		menu();
//		scanf("%d", &input);
//		switch(input)
//		{
//		case 1:
//			//开始游戏
//			game();
//		case 0:
//			printf("游戏结束\n");
//			break;
//		default:
//			printf("输出错误，请重新选择");
//		}
//	} while (input);
//	return 0;
//}

//改进游戏，有五次机会猜测***********
void menu() {
	printf("是否开始猜数字游戏\n");
	printf("1.开始\n");
	printf("0.结束\n");
	printf("请输入：");

}
void game() {
	int r = (rand() % 100 + 1);
	int guess = 0;
	int cout = 5;
//注意这里的变动
	while (cout) {
		printf("你还有%d次机会\n", cout);
		printf("请猜测：");
		scanf("%d", &guess);
		if (guess > r)
			printf("猜大了\n");
		else if (guess < r)
			printf("猜小了\n");
		else
		{
			printf("恭喜你猜对了\n");
			break;
		}
		cout--;
		
	}
	if (cout == 0)
		printf("机会用完，游戏失败\n");
}
int main()
{   //为了让伪随机数变真随机
	srand((unsigned int)time(NULL));
	//time返回类型是time_t,强制转换为srand需要的unsigned int 类型
	int input = 0;
	//选择是否游戏
	do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			//开始游戏
			game();
		case 0:
			printf("游戏结束");
			break;
		default:
			printf("输出错误，请重新选择");
		}
	} while (input);
	return 0;
}
